自动化运维工具对Windows系统远程管理
在windows2003以及更早期的系统中,当第一个用户登录系统后服务和应用程序时在同一个Session中运行,一般是Session 0,以后再登录用户则在Session 1、Session 2 …中运行,如下图。
这种方式的好处是以System用户启动的服务也可以和第一个桌面用户进行交互。
在windows 2008以及以后的系统中,微软改变了这种方式,Session 0中只包含了系统服务,其他应用则在不同Session 中运行。如下图:
这样确实提高了系统的安全性,但也带来一下麻烦,由于Session 0与其他Session直接无法进行交互,不能通过服务向用户桌面弹出消息、UI窗口等,也给我们批量管理windows服务带来一些困扰。譬如,管理一批Windows系统服务器,这些服务器上运行应用都是有UI界面的,需要用集中化的自动化运维工具远程对这些应用做启动、停止、更新等操作,当通过自动化运维工具直接启动这些应用时,发现进程已经启动,但是UI界面看不到,功能也不正常。实际情况是这些应用是在Session 0中运行,我们登录用户则是在Session 1中,所有不能交互。
如何解决这样的问题呢?
可以通过InteractiveServices Detection系统服务将这些应用的在Session 0中的信息窗口已告警弹窗的形式显示给Session 1的桌面用户。
一:将Interactive Services Detection系统服务设置成自动运行,如果是应用是32位的,设置成手动启动也是可以的。
二:将自动化运维工具的Agent服务设置成“允许服务与桌面交互”
三:将要远程管理的应用通过“”注册成服务,并将服务设置成“允许服务与桌面交互”。然后就可以通过自动化运维工具来远程的启动、停止该应用了。“”是Windows Resource Kits工具集中的两个工具,可以去微软下载。
具体来举个例子:
我们将记事本程序notepad.exe注册成服务,服务名就叫note,并通过Saltstack来远程启动或关闭它。
首先:我们从微软下载“”两个工具放到C:\Windows\Syswow64\文件夹下。
1、 注册服务note:
C:\>instsrv.exe note c:\windows\SysWOW64\srvany.exe
2、在注册表中将note服务项进行配置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\note建立Parameters项目,并在Parameters项下新建以下几个字符串值。
名称 Application 值为你要作为服务运行的程序地址。
名称 AppDirectory 值为你要作为服务运行的程序所在文件夹路径。
名称 AppParameters 值为你要作为服务运行的程序启动所需要的参数
3、设置“note”服务未允许服务与桌面交互
这样我们就可以通过Slatstack远程执行net start note命令就可启动notepad程序了,登录系统可以看到有探测告警。
点击查看消息,这可看到notepad程序界面,并可操作。
本文转载自订阅号“G云定制云“
加入云技术社区技术交流微信群,联系北极熊微信:hadxiaer(加的时候请备注:姓名-城市-公司)
交流 分享 提升
云技术社区成立于2014年,国内最大的云技术交流平台,分享在云计算/虚拟化项目实施中的资讯、经验和技术,坚持干货。旗下运营:云技术实践、云技术、桌面云之云潮涌动等公众号,以及相关的微信群和QQ群,覆盖云计算领域的技术人群,加入云技术社区微信、QQ群请点击订阅号菜单“群和活动”,近期投稿采用后送新出版的《运维前线》,投稿邮箱502207183@qq.com。